<?php

namespace app\home\controller;
use app\home\model\User as usertable;
use think\Controller;
use think\Request;

class Login extends Controller
{
    
    public function login()
    {
        //
        $this->view->engine->layout(false); // 临时关闭布局模板
        return view('');
    }
    public function register()
    {
        //
        $this->view->engine->layout(false); // 临时关闭布局模板
        return view('');
    }
    public function phone()
    {
        // 接收参数
        $param = input();
        // dump($param);
        // 检测参数
        $validate = $this->validate($param,[
            'phone|手机号'=>'require|reg:1[3-9]\d{9}|unique:user,phone',
            'code|验证码'=>'require|length:4',
            'password|密码'=>'require|length:6,20|confirm:repassword',
        ]);
        if($validate!==true){
            $this->error($validate);
        }
        // 验证验证码
        $code = cache('register_code_'.$param['phone']);
        if($code!=$param['code']){
            $this->error('验证码错误');
        } 
        // 注册用户（写入数据库 添加数据）
        usertable::create($param,true);
        // 返回数据（前后台分离 json数据）
        // 页面跳转
        $this->redirect('/login');
    }
    function sendCode()
    {
        // 接受参数
        $param = input();
        // 检测参数
        // 生成验证码
        $code = mt_rand(1000, 9999);
        $content = "你注册的验证码是{$code}";
        // 保存验证码
        cache('register_code_'.$param['phone'],$code);
        // 发送验证码
        $res = [
            'code' => 200,
            'msg' => "发送成功",
            'data' => $content
        ];
        json($res)->send();die;
    }
    public function do_login(){
        // 接受参数
        $param = input();
        // dump($param);
        // 参数验证码
        $validate = $this->validate($param,[
            'username|手机号'=>"require",
            'password|密码'=>"require|length:6,20"
        ]);
        if($validate!==true){
            $this->error($validate);
        }

        // 方法一
        // 密码和用户名是否已经注册（查询）
        // $sel = usertable::where('phone',$param['username'])->where('password',$param['password'])->find();
        // 闭包查询
        $sel = usertable::where(function($query) use($param){
            $query->where('username',$param['username'])->whereOr('phone',$param['username'])->
            whereOR('email',$param['username']);
        })->where('password',$param['password'])->find();
        // 没有 给错误信息
        if(!empty($sel)){
            session("user_info",$sel->toArray());
            $this->redirect('/');  
        }else{
            $this->error('用户名或密码错误'); 
        }
        // 如果有  跳转页面

        // 方法二：先查询用户名 在比对密码
        // $info = usertable::where('phone',$param['username'])->whereOr('email',$param['username'])->whereOr('username',$param['username'])->find();
        // if($info && $info['password']==$param['password']){
        //     $this->redirect('/');
        // }else{
        //     $this->error('用户名或密码错误');
        // }

    }
    public function out(){
        session(null);
    }
}
